﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Gustozzi.DAL;
using Gustozzi.BL;

namespace WebGustozzi.ModuloVentas
{
    ///<summary>
    ///Nombre	    : wfAgregarDetallePromocion
    ///Descripción	: 
    ///               
    ///</summary>
    ///<remarks>
    ///Fecha        Moficado Por        Descripción
    ///15/02/2012   Arturo Clariana     Versión inicial
    ///23/02/2012   Marco Pizarro	    Agregar validaciones iniciales
    ///</remarks>
    public partial class wfAgregarDetallePromocion : System.Web.UI.Page
    {
        VentasDataEntities contexto = null;
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack) 
            {

            } 
            CargarGrilla();
        }

        public void CargarGrilla()
        {
            hdfIdPromocion.Value = Request.QueryString["idPr"];
            if (contexto == null) 
            {
                contexto = new VentasDataEntities();
            }

            if(hdfIdPromocion.Value.Equals(string.Empty))
            {
                throw new Exception("No se ha registrado codigo de promoción");
            }
            int idPromocion = Convert.ToInt32(hdfIdPromocion.Value);

            if (Session["listaProductos"] == null)
            {
                var pedidos = from p in contexto.PromocionItems
                              where p.codigoPromocion == idPromocion
                              select p;

                Session["listaProductos"] = pedidos.ToList();
                grvListaProductos.DataSource = pedidos;
                grvListaProductos.DataBind();
            }
            else 
            {
                grvListaProductos.DataSource = Session["listaProductos"];
                grvListaProductos.DataBind();
            }
           
        }

        protected void grvListaProductos_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            if (e.RowIndex>=0) 
            {
               int id= Convert.ToInt32(((Label)grvListaProductos.Rows[e.RowIndex].Cells[1].Controls[0]).Text);
             
                var listado = Session["listaProductos"];
                if (listado != null)
                {
                    List<PromocionItem> lstProductos = (List<PromocionItem>)listado;
                    if (lstProductos.Count() > 0)
                    {
                        lstProductos.RemoveAt(e.RowIndex);

                        grvListaProductos.DataSource = lstProductos;
                        grvListaProductos.DataBind();
                      }
                        
                }
            }
        }

        protected void grvListaProductos_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (contexto == null)
            {
                contexto = new VentasDataEntities();
            }
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                PromocionItem promo = (PromocionItem)e.Row.DataItem;
                int idPromocionDetalle = Convert.ToInt32(promo.codigoPromocionDetalle);
                 
                var detalle = (from p in contexto.PromocionItems.Include("Producto") 
                                 where p.codigoPromocionDetalle ==idPromocionDetalle
                                   select p);

               
                    if (detalle.Count() != 0)
                    {
                        PromocionItem oItem = detalle.First();
                        var um = (from u in contexto.UnidadesMedida
                                 where u.codigoUnidMedida == oItem.Producto.codigoUnidMedida
                                 select u).First();
                        e.Row.Cells[4].Text = oItem.Producto.descripcion;
                        e.Row.Cells[5].Text = um.descripcion;
                        e.Row.Cells[6].Text = oItem.cantidad.ToString();
                        e.Row.Cells[7].Text = oItem.precio.ToString();
                    }
                    else
                    {
                        var listado = Session["listaProductos"];
                        List<PromocionItem> lstProductos = null;
                        if (listado != null)
                        {
                            lstProductos = (List<PromocionItem>)listado;
                            int idProducto = lstProductos[e.Row.DataItemIndex].codigoProducto;
                            Producto oProd = (from p in contexto.Productos.Include("UnidadMedida")
                                                where p.codigoProducto == idProducto
                                                  select p).First();
                            
                             e.Row.Cells[4].Text = oProd.descripcion;
                             e.Row.Cells[5].Text = oProd.UnidadMedida.descripcion;
                             e.Row.Cells[6].Text = promo.cantidad.ToString();
                             e.Row.Cells[7].Text = promo.precio.ToString();

                        }
                    }
                }

        }

        protected void hdfNumItems_ValueChanged(object sender, EventArgs e)
        {
            try
            {
                var listado = Session["listaProductos"];
                if(listado!=null)
                {
                    List<PromocionItem> lstPromo = (List<PromocionItem>)listado;
                    grvListaProductos.DataSource = lstPromo;
                    grvListaProductos.DataBind();
                }

            }
            catch (Exception ex)
            {
                lblMsj.Text = ex.Message;
                lblMsj.ForeColor = System.Drawing.Color.Red;
                divMensaje.Visible = true;

            }
        }

        protected void imbCerrar_Click(object sender, ImageClickEventArgs e)
        {
            divMensaje.Visible = false;
            try
            {
                Guardar();
            }
            catch (Exception ex)
            {
                lblMsj.Text = ex.Message;
                lblMsj.ForeColor = System.Drawing.Color.Red;
                divMensaje.Visible = true;
            }
        }

        public void Guardar() 
        {
            
               /* var listado = Session["listaProductos"];
                if (listado != null)
                {
                    List<PromocionItem> lstPromo = (List<PromocionItem>)listado;
                    
                    MarketingBL oMarketingBL = new MarketingBL();
                    int idPromo = Convert.ToInt32(hdfIdPromocion.Value);
                    oMarketingBL.ActualizarDetallePromocion(lstPromo, idPromo);

                }*/
        }

    }
}